package com.ygxsk.carhome.retrofit;

import android.app.Activity;
import android.content.Context;
import android.text.TextUtils;

import com.alibaba.fastjson.JSON;
import com.blankj.utilcode.util.ActivityUtils;
import com.blankj.utilcode.util.ObjectUtils;
import com.blankj.utilcode.util.ToastUtils;
import com.tencent.mmkv.MMKV;
import com.ygxsk.carhome.constant.ConstantApi;
import com.ygxsk.carhome.constant.ConstantSign;
import com.ygxsk.carhome.ui.BaseImmersionFragment;
import com.ygxsk.carhome.ui.ErrorActivity;
import com.ygxsk.carhome.utils.CommUtils;

import java.util.HashMap;
import java.util.concurrent.TimeUnit;

import io.reactivex.rxjava3.annotations.NonNull;
import io.reactivex.rxjava3.core.Observable;
import io.reactivex.rxjava3.core.ObservableEmitter;
import io.reactivex.rxjava3.core.ObservableOnSubscribe;
import io.reactivex.rxjava3.functions.Consumer;

/**
 * Autuhor:Administrator
 * Time:2019/12/6 0006  11:13
 * Description: this is 一个需要携带参数标识method的一个实现类
 */
public abstract class ApiRequestSubListener<O> implements ApiRequestListener<O> {

    /**
     * 判断这个界面是Activity还是Fragment
     */
    private int isActivityOrFragment;

    /**
     * 属于fragment之类的
     */
    private ErrorActivity errorActivity;

    /**
     * 属于是fragment之类的
     */
    private BaseImmersionFragment fragmentClamour;

    /**
     * 空参数的构造函数，主要用于上传日志
     */
    public ApiRequestSubListener() {
    }

    /**
     * 是fragment的界面
     */
    public ApiRequestSubListener(int _isActivityOrFragment, BaseImmersionFragment _immersionFragment) {
        this.isActivityOrFragment = _isActivityOrFragment;
        this.fragmentClamour = _immersionFragment;
    }

    /**
     * 是activity的界面
     */
    public ApiRequestSubListener(int _isActivityOrFragment, ErrorActivity _errorActivity) {
        this.isActivityOrFragment = _isActivityOrFragment;
        this.errorActivity = _errorActivity;
    }

    //------------------------------------------------------------------------------------------------------------------

    @Override
    public void handlerSomeThingNotSuccessDataForItSelf(int what_method, String serverCode, String serverMessage) {

        //======================================================================================================
//
//        //然后子类自己在自己的界面做处理。每个页面毕竟有它自己个性化的需求；
//        //....do something
//        //(ErrorActivity)_activity.(method,statusCode,message);
//        switch (isActivityOrFragment) {
//
//            case ConstantApi.IS_ACTIVITY_ITSELF: {//如果是activity
//
//                if (errorActivity != null) {
//                    LogUtils.d(ConstantApi.LOGCAT_NOMAL + "errorActivity.methodNotSuccessData()--之中 errorActivity值==>" + errorActivity.getClass().getName().toString());
//                    errorActivity.methodNotSuccessData(method, statusCode, message);
//                } else {
//                    LogUtils.d(ConstantApi.LOGCAT_NOMAL + "errorActivity.methodNotSuccessData()--之中 errorActivity 是空值");
//                }
//
//                break;
//            }
//
//            case ConstantApi.IS_FRAGMENT_ITSELF: {//如果是fragment
//
//                if (fragmentClamour != null) {
//                    LogUtils.d(ConstantApi.LOGCAT_NOMAL + "fragmentClamour.methodNotSuccessData()--之中 fragmentClamour 值==>" + fragmentClamour.getClass().getName().toString());
//                    fragmentClamour.methodNotSuccessData(method, statusCode, message);
//                } else {
//                    LogUtils.d(ConstantApi.LOGCAT_NOMAL + "fragmentClamour.methodNotSuccessData()--之中 fragmentClamour 是空值");
//                }
//
//                break;
//            }
//
//            default:
//                break;
//        }
//
//        //======================================================================================================

    }

    @Override
    public void addLogInApiRequestListener(Context _context, //上下文对象
                                           String _interfaceAddress,//接口名称
                                           String _requestMethod,//人为的手动传入是get还是post
                                           HashMap<String, Object> _requestParamObject, // O responseSuccedDataParam, //备注：这个暂时没用到。
                                           String _errorMessageMy) {//单纯的私人的消息，不是正常的code携带的消息。


        // : 2023-03-21 日志的多次循环上传的处理
        //http://222.222.17.184:3379/stage-api/system/shop/getShopInfoForShopManager
        //如果url是服务站的话，就不上传；
//        if (_interfaceAddress.endsWith("getShopInfoForShopManager")
//                || _interfaceAddress.contains("appLogin")//这个不用上传
//                || _errorMessageMy.contains("验证")
//                || _errorMessageMy.contains("token".toUpperCase())//忽略大小写，遇到token失效也不上传，因为本身日志也会报token失效；
//                || _errorMessageMy.contains("密码")
//        ) {//
//            //因为在首页，如果获取服务站信息报错，要执行上传，因为这时候在刷新首页，有点浪费资源；
//            return;
//        }

        //2022-11-16 界面额外的异常拦截放在这里
//        if (MMKV.defaultMMKV().decodeBool(ConstantSign.MMKV_ADDLOG_SUCCESSED)) {

        if (_context != null) {

            //rxjava3的操作方式；
            Observable.create(new ObservableOnSubscribe<Integer>() {
                @Override
                public void subscribe(@NonNull ObservableEmitter<Integer> emitter) throws Throwable {
                    emitter.onNext(1);//第一次发送
                    emitter.onComplete();
                }
            }).throttleFirst(120, TimeUnit.SECONDS).subscribe(new Consumer<Integer>() {
                @Override
                public void accept(Integer integer) throws Throwable {

                    if (integer == 1) {
                        String hashMapToString = JSON.toJSONString(_requestParamObject);
                        CommUtils.addLog(_context, _interfaceAddress, _requestMethod, hashMapToString, _errorMessageMy);
                    }

                }
            });

        }

//        }

    }

    /**
     * 是服务器返回来的约定好的编码的 json 转换时候的异常,在 JsonConverMethod 之中传递。
     */
    @Override
    public void onErrorServerNotSuccessDataResponse(int method, //
                                                    boolean isToastToUser, //
                                                    Activity _activity, //
                                                    String statusCode, //
                                                    String message) {//

        //LogUtils.d("itchen---super.onErrorServerNotSuccessDataResponse()---->statusCode=" + statusCode + "-------message=" + message);
        //LogUtils.d("itchen---super.onErrorServerNotSuccessDataResponse()---->statusCode=" + statusCode + "-------message=" + message);

        //子类super.onErrorServerResponse 之后实现自己的个性化异常处理

        //======================================================================================================
        if (ConstantApi.RESPONSE_10001 <= Integer.parseInt(statusCode) && Integer.parseInt(statusCode) <= ConstantApi.RESPONSE_19999) {

            //表示系统级错误不向用户展示错误信息.自己做保存处理.
            CommUtils.handlerLog(statusCode, message);

        } else if (ConstantApi.RESPONSE_20001 <= Integer.parseInt(statusCode) && Integer.parseInt(statusCode) <= ConstantApi.RESPONSE_29999) {

            //====================================================================================================================
            //该APP之中没有【签到】逻辑
//            if (TextUtils.equals(statusCode, ConstantApi.RESPONSE_29105)) {
//                ToastUtils.showShort("去签到~");
//            }
            //====================================================================================================================

            //表示服务级错误向用户展示错误信息。
            if (TextUtils.equals(statusCode, ConstantSign.RESPONSE_20401)) {

                //跳转到登录界面的处理
                if (_activity != null && ActivityUtils.isActivityAlive(_activity)) {

                    if (!TextUtils.isEmpty(message)) {

                        //重新跳转到登录界面
                        CommUtils.loginInfoOutLogic(_activity, message, MMKV.defaultMMKV().decodeString(ConstantSign.P_INPUTNAMELASTTIME));

                    }
                }

            } else {
                //表示服务级错误向用户展示错误信息。
                //判断该类是否是在顶部，如果在顶部就展示提示。如果不在顶部，则不提示
                if (isToastToUser) {

                    //LogUtils.d("itchen----->即将产生 消息 吐司--isToastToUser-->" + isToastToUser);

                    if (_activity != null && ActivityUtils.isActivityAlive(_activity)) {

                        //长提示 在中心
                        //ToastUtils.setGravity(Gravity.CENTER, 0, 0);
                        //ToastUtils.showLong(httpEntity.getMessage());
                        //LogUtils.d("itchen----->产生了消息 吐司---->" + message);

                        //短提示 在底部
                        if (!TextUtils.isEmpty(message)) {

                            if (TextUtils.equals(statusCode, ConstantSign.RESPONSE_20002)) {//无数据的 也不能吐司提示
                                //{"data":"","message":"无数据","code":"20002"}
                                //{"data":"","message":"无更多数据","code":"29999"}
//                                LogUtils.d(ConstantApi.LOGCAT_NOMAL + "无意义的提示，就不提示了");
                            } else {

                                //2020年3月11日09:58:20 如果是【未签到】的页面的话 就不能再提示，因为已经有了弹窗提示
                                //2020年3月26日13:54:10  发现这个弹窗提示在中央，遮盖了我 mAlert这个弹窗提示 得放在底部
                                //原始代码
                                //ToastUtils.showShort(message);
                                //后来修改
                                //LogUtils.d("itchen----getTopActivity-&&---_activity-->" + _activity.getClass().getName() + "<-------->" + ActivityUtils.getTopActivity().getClass().getName());

                                //判断，如果当前Activity正处于 堆栈 的第一个,那么就提示
                                if (ObjectUtils.equals(_activity, ActivityUtils.getTopActivity())) {

//                                    LogUtils.d("itchen---_activity--->" + _activity.getClass().getName() + "--是处于栈顶的，  直接提示");
                                    //CommUtils.displayToastShort(_activity, message);
                                    ToastUtils.showShort(message);
//                                    LogUtils.d("itchen---_activity--->" + _activity.getClass().getName() + "--提示完毕！");
                                    //如果他们俩相等，那么就说明该Activity 处于栈顶，那么就弹窗提示

                                } else {
//                                    LogUtils.d("itchen---_activity--->" + _activity.getClass().getName() + "--不是处于栈顶的，不直接提示");
                                }

                            }

                        }

                    } else {
                        //LogUtils.d("itchen----->跳出了吐司判断--mActivityListener--->" + _activity);
                    }

                }
            }

        } else if (TextUtils.equals(statusCode, ConstantSign.RESPONSE_39527)) {

            //2022年11月1日09:23:40基本改为空数据或者数据为空的提示了；
            //仅仅做消息提示处理，后边还有逻辑子类自己实现。
            //暂时不放在中间，太频繁有点堵着屏幕中心
//            LogUtils.d(ConstantApi.LOGCAT_NOMAL + "走到了 RESPONSE_39527 之中--提示了-->" + message);//message基本不是空值。

            //这里statesCode 和 message 都是传递过来的。
            if (isToastToUser) {
                if (!TextUtils.isEmpty(message)) {
                    ToastUtils.showShort(message);
                }
            }

        } else {//如果 在29999之外，那么直接提示。不判断码。一般不会走到这里。

//            LogUtils.d(ConstantApi.LOGCAT_NOMAL + "走到了20000之中--第一行逻辑");

            if (_activity != null && ActivityUtils.isActivityAlive(_activity)) {

                //==========================================================================================
                //LogUtils.d("itchen----走到了20000响应的逻辑弹窗");
                //2021-10-14 修改bug:20000的时候界面要展示，但是竟然也出现了吐司 success 的屏蔽。
                /*{
                    "code":"20000",
                        "data":{
                        "beginTime":"2021-10-14 00:00:00",
                        "endTime":"2021-10-14 23:59:59",
                        "list":[]
                },
                       "message":"success"
                }*/

//                {
//                        "code":"20000",
//                        "data":1,
//                        "message":"success"
//                }

                if (TextUtils.equals(statusCode, ConstantSign.RESPONSE_20000) && TextUtils.equals(message, "success")) {
//                    LogUtils.d(ConstantApi.LOGCAT_NOMAL + "走到了20000之中--什么也不提示");
                } else {
                    //==============================================================================================================
//                    LogUtils.d(ConstantApi.LOGCAT_NOMAL + "走到了20000之中--但是提示了");
                    //ToastUtils.setGravity(Gravity.CENTER, 0, 0);
                    if (isToastToUser) {
                        if (!TextUtils.isEmpty(message)) {
                            ToastUtils.showShort(message);
                        }
                    }
                    //==============================================================================================================
                }
            }
        }

        //==========================================================================================================================
        //然后子类自己在自己的界面做处理。每个页面毕竟有它自己个性化的需求；
        //....do something
        //(ErrorActivity)_activity.(method,statusCode,message);

        switch (isActivityOrFragment) {

            case ConstantApi.IS_ACTIVITY_ITSELF: {//如果是ErrorActivity activity

                if (errorActivity != null) {
//                    LogUtils.d(ConstantApi.LOGCAT_NOMAL + "---------------------------------------------------errorActivity.methodNotSuccessData()--之中 errorActivity值==>" + errorActivity.getClass().getName().toString() + "-------------------------");
                    errorActivity.methodNotSuccessData(method, statusCode, message);
                }
//                else {
//                    LogUtils.d(ConstantApi.LOGCAT_NOMAL + "errorActivity.methodNotSuccessData()--之中 errorActivity 是空值");
//                }

                break;
            }

            case ConstantApi.IS_FRAGMENT_ITSELF: {//如果是fragment

                if (fragmentClamour != null) {
//                    LogUtils.d(ConstantApi.LOGCAT_NOMAL + "-----------------------------------------------fragmentClamour.methodNotSuccessData()--之中 fragmentClamour 值==>" + fragmentClamour.getClass().getName().toString());
                    fragmentClamour.methodNotSuccessData(method, statusCode, message);
                }
//                else {
//                    LogUtils.d(ConstantApi.LOGCAT_NOMAL + "fragmentClamour.methodNotSuccessData()--之中 fragmentClamour 是空值");
//                }

                break;
            }

            default:
//                LogUtils.d(ConstantApi.LOGCAT_NOMAL + "没有执行到刷新界面的逻辑 走到了 default---isActivityOrFragment-->" + isActivityOrFragment);
                break;
        }

//        //======================================================================================================

        //2023年8月15日14:11:12 如下是三农的逻辑：
        //================================================================================================================================
//        if (ConstantApi.RESPONSE_10001 <= Integer.parseInt(statusCode) && Integer.parseInt(statusCode) <= ConstantApi.RESPONSE_19999) {
//            //表示系统级错误不向用户展示错误信息.自己做保存处理.
//            //CommUtils.handlerLog(statusCode, message);
//        } else

        //2xx （成功）：表示成功处理了请求的状态代码。
        //3xx （重定向）：接口重定向
        //4xx（请求错误）：这些状态代码表示请求可能出错，妨碍了服务器的处理。
        //400  （错误请求）Bad Request请求包含语法错误
        //401  （未授权）401 Unauthorized当前请求需要用户验证
        //403  （禁止）    Forbidden服务器已理解请求，但拒绝执行它

//        if (!TextUtils.isEmpty(statusCode)) {
//
//            if (ConstantApi.RESPONSE_201 <= Integer.parseInt(statusCode) && Integer.parseInt(statusCode) <= ConstantApi.RESPONSE_299) {//请求成功
//
//                LogUtils.d(ConstantSign.LOGCAT_NOMAL + "RESPONSE_201-299->响应码=>" + statusCode + "-响应消息=>" + message);
//
//            } else if (ConstantApi.RESPONSE_300 <= Integer.parseInt(statusCode) && Integer.parseInt(statusCode) <= ConstantApi.RESPONSE_399) {//300的可能需要跳转到H5的页面，或者打开小程序等
//
//                Bundle bundle_extra = new Bundle();
//                //bundle_extra.putString(ConstantApi.EXTRA_CATEGORY_NAME, adapter.getItem(position)).getName());
//                //bundle_extra.putInt(ConstantApi.EXTRA_WEBVIEW_FLAG, ConstantApi.VALUE_JUMPFROM_SUGGESTIONS_MAINPAGE);
//                ActivityUtils.startActivity(bundle_extra, WebViewNormalActivity.class);
//
//            } else if (ConstantApi.RESPONSE_400 <= Integer.parseInt(statusCode) && Integer.parseInt(statusCode) <= ConstantApi.RESPONSE_499) {//参数的错误或者手机端传递信息的错误
//
//                LogUtils.d(ConstantSign.LOGCAT_NOMAL + "RESPONSE_400-499->响应码=>" + statusCode + "-响应消息=>" + message);
//
//                //这里假如是401刚好的 是token无效 需要重新登录的
//                if (TextUtils.equals(statusCode, ConstantSign.RESPONSE_401)) {
//                    //跳转到登录界面的处理
//                    if (_activity != null && ActivityUtils.isActivityAlive(_activity)) {
//                        if (!TextUtils.isEmpty(message)) {
//                            //重新跳转到登录界面
//                            if (!TextUtils.isEmpty(MMKV.defaultMMKV().decodeString(ConstantSign.P_INPUTNAMELASTTIME))) {
//                                CommUtils.loginInfoOutLogic(_activity, message, MMKV.defaultMMKV().decodeString(ConstantSign.P_INPUTNAMELASTTIME));
//                            } else {
//                                CommUtils.loginInfoOutLogic(_activity, message, MMKV.defaultMMKV().decodeString(ConstantSign.P_TRUENAME));
//                            }
//                        }
//                    }
//                }
//
//                if (!TextUtils.isEmpty(message)) {
//                    //如果后台让提示日志，就提示日志，不让提示，就不提示
//                    if (isToastToUser) {
//                        ToastUtils.showShort(message);
//                    } else {
//                        LogUtils.e("400开头的---不提示的--->报错日志->" + message);
//                    }
//                } else {
//                    ToastUtils.showShort(ConstantSign.ERROR_CODE);
//                }
//
//            } else if (ConstantApi.RESPONSE_500 <= Integer.parseInt(statusCode) && Integer.parseInt(statusCode) <= ConstantApi.RESPONSE_599) {//调试的时候500也提示，方便调试查看
//
//                LogUtils.d(ConstantSign.LOGCAT_NOMAL + "RESPONSE_500-599>响应码=>" + statusCode + "-响应消息=>" + message);
//
//                // : 2023-03-21 测试时候放开，真实上线不能提示的
//                if (!TextUtils.isEmpty(message)) {
//
//                    if (ApiService.IS_DEBUG) {
//
//                        //暂时测试一些不弹窗的看看效果；
//                        //ToastUtils.showShort(message);
//
//                        //暂时设置仅仅提示 500 的；
//                        if (TextUtils.equals(statusCode, ConstantSign.RESPONSE_500)) {
//                            ToastUtils.showShort(ConstantSign.ERROR_CODE + ConstantSign.RESPONSE_500);
//                        }
//
//                    } else if (ApiService.IS_RELEASE) {
//
//                        if (TextUtils.equals(statusCode, ConstantSign.RESPONSE_500)) {
//                            ToastUtils.showShort(ConstantSign.ERROR_CODE + ConstantSign.RESPONSE_500);
//                        }
//
//                    }
//
//                    LogUtils.e("报错日志->" + message);
//
//                } else {
//                    ToastUtils.showShort(ConstantSign.ERROR_CODE + statusCode);
//                }
//
//            } else if (TextUtils.equals(statusCode, ConstantSign.RESPONSE_39527)) {
//
//                //2022年11月1日09:23:40基本改为空数据或者数据为空的提示了；
//                //暂时不放在中间，太频繁有点堵着屏幕中心
////            LogUtils.d(ConstantApi.LOGCAT_NOMAL + "走到了 RESPONSE_39527 之中--提示了-->" + message);//message基本不是空值。
//
//                //这里statesCode 和 message 都是传递过来的。
//                if (isToastToUser) {
//                    if (!TextUtils.isEmpty(message)) {
//                        ToastUtils.showShort(message);
//                    }
//                }
//
//            } else if (TextUtils.equals(statusCode, ConstantSign.REQUEST_30003)) {
//
//                LogUtils.d("itchen----走到了 REQUEST_30003 响应的 ------");
//                //    │ itchen-->是(instanceof ApiException)com.ygxsk.integrated.retrofit.ApiException--code=>30003--message=>retrofit2.adapter.rxjava3.HttpException#HTTP 405 Not Allowed
//
//                if (isToastToUser) {
//
//                    if (!TextUtils.isEmpty(message)) {
//
//                        ToastUtils.showShort(message);
//                        //ToastUtils.showShort(ConstantSign.REQUEST_30003_TEXT);
//                    }
//
//                }
//
//
//            } else {
//
//                //我自定义的错误
//                //LogUtils.d(ConstantSign.LOGCAT_NOMAL + "走到非200之外->" + message);
//
//                if (_activity != null && ActivityUtils.isActivityAlive(_activity)) {
//
//                    //==========================================================================================
//                    LogUtils.d("itchen----走到了RESPONSE_39527响应的 以外------");
//
//                    if (TextUtils.equals(statusCode, ConstantSign.RESPONSE_200) && TextUtils.equals(message, "success")) {
////                    LogUtils.d(ConstantApi.LOGCAT_NOMAL + "走到了20000之中--什么也不提示");
//                    } else {
//                        //==============================================================================================================
////                    LogUtils.d(ConstantApi.LOGCAT_NOMAL + "走到了20000之中--但是提示了");
//                        if (isToastToUser) {
//                            if (!TextUtils.isEmpty(message)) {
//                                ToastUtils.showShort(message);
//                            }
//                        }
//                        //==============================================================================================================
//                    }
//                }
//            }
//
//            //==========================================================================================================================
//            //然后子类自己在自己的界面做处理。每个页面毕竟有它自己个性化的需求；
//            //....do something
//
//            switch (isActivityOrFragment) {
//
//                case ConstantApi.IS_ACTIVITY_ITSELF: {//如果是ErrorActivity activity
//
//                    if (errorActivity != null) {
////                    LogUtils.d(ConstantApi.LOGCAT_NOMAL + "---------------------------------------------------errorActivity.methodNotSuccessData()--之中 errorActivity值==>" + errorActivity.getClass().getName().toString() + "-------------------------");
//                        errorActivity.methodNotSuccessData(method, statusCode, message);
//                    }
//
////                else {
////                    LogUtils.d(ConstantApi.LOGCAT_NOMAL + "errorActivity.methodNotSuccessData()--之中 errorActivity 是空值");
////                }
//
//                    break;
//                }
//
//                case ConstantApi.IS_FRAGMENT_ITSELF: {//如果是fragment
//
//                    if (fragmentClamour != null) {
////                    LogUtils.d(ConstantApi.LOGCAT_NOMAL + "-----------------------------------------------fragmentClamour.methodNotSuccessData()--之中 fragmentClamour 值==>" + fragmentClamour.getClass().getName().toString());
//                        fragmentClamour.methodNotSuccessData(method, statusCode, message);
//                    }
//
////                else {
////                    LogUtils.d(ConstantApi.LOGCAT_NOMAL + "fragmentClamour.methodNotSuccessData()--之中 fragmentClamour 是空值");
////                }
//
//                    break;
//                }
//
//                default:
////                LogUtils.d(ConstantApi.LOGCAT_NOMAL + "没有执行到刷新界面的逻辑 走到了 default---isActivityOrFragment-->" + isActivityOrFragment);
//                    break;
//            }
//
////        //======================================================================================================
//
//        }
    }


    /**
     * 服务器返回来的数据响应异常处理。暂时在JsonConvert之中使用，也用来覆盖或者提示页面。
     */
    @Override
    public void onExceptionResponse(int method, int flagShowPageOrToast, Activity _activity, Exception exception) {

        //LogUtils.d("itchen---执行 ApiRequestSubListener--onException");

//        if (exception != null) {
//
//            //自己先做部分异常处理，然后子类 通过 super.onException之后自己实现个性化异常处理
//            if (exception instanceof NetworkError) {//
//
//                if (flagShowPageOrToast == ConstantApi.RESPONSE_ONFAILED_PAGE) {
//
//                    CommUtils.checkCurrently((ErrorActivity) _activity, //
//                            R.drawable.errorwork,//
//                            ConstantApi.NET_BAD,//
//                            ConstantApi.NETWORKFAIL);
//
//                } else if (flagShowPageOrToast == ConstantApi.RESPONSE_ONFAILED_TOAST) {
//
//                    ToastUtils.showShort(ConstantApi.NET_BAD);
//                }
//
//
//            } else if (exception instanceof URLError) {//
//
//                if (flagShowPageOrToast == ConstantApi.RESPONSE_ONFAILED_PAGE) {
//
//                    CommUtils.checkCurrently((ErrorActivity) _activity, //
//                            R.drawable.errorwork,//
//                            ConstantApi.NET_URLERROR,//
//                            ConstantApi.NETWORKFAIL);
//
//                } else if (flagShowPageOrToast == ConstantApi.RESPONSE_ONFAILED_TOAST) {
//
//                    ToastUtils.showShort(ConstantApi.NET_URLERROR);
//
//                }
//
//
//            } else if (exception instanceof HostError) {//
//
//                if (flagShowPageOrToast == ConstantApi.RESPONSE_ONFAILED_PAGE) {
//
//                    CommUtils.checkCurrently((ErrorActivity) _activity, //
//                            R.drawable.errorserver,//
//                            ConstantApi.NET_HOSTERROR,//
//                            ConstantApi.NETWORKFAIL);
//
//                } else if (flagShowPageOrToast == ConstantApi.RESPONSE_ONFAILED_TOAST) {
//
//                    ToastUtils.showShort(ConstantApi.NET_HOSTERROR);
//
//                }
//
//
//            } else if (exception instanceof ConnectTimeoutError) {
//
//                if (flagShowPageOrToast == ConstantApi.RESPONSE_ONFAILED_PAGE) {
//
//                    CommUtils.checkCurrently((ErrorActivity) _activity, //
//                            R.drawable.errorwork,//
//                            ConstantApi.NET_TIMEOUT,//
//                            ConstantApi.NETWORKFAIL);
//
//                } else if (flagShowPageOrToast == ConstantApi.RESPONSE_ONFAILED_TOAST) {
//
//                    ToastUtils.showShort(ConstantApi.NET_TIMEOUT);
//
//                }
//
//            } else if (exception instanceof WriteException) {
//
//                if (flagShowPageOrToast == ConstantApi.RESPONSE_ONFAILED_PAGE) {
//
//                    CommUtils.checkCurrently((ErrorActivity) _activity, //
//                            R.drawable.errorwork,//
//                            ConstantApi.NET_WRITEEXCEPTION,//
//                            ConstantApi.NETWORKFAIL);
//
//                } else if (flagShowPageOrToast == ConstantApi.RESPONSE_ONFAILED_TOAST) {
//
//                    ToastUtils.showShort(ConstantApi.NET_WRITEEXCEPTION);
//
//                }
//
//
//            } else if (exception instanceof ReadTimeoutError) {
//
//                if (flagShowPageOrToast == ConstantApi.RESPONSE_ONFAILED_PAGE) {
//
//                    CommUtils.checkCurrently((ErrorActivity) _activity, //
//                            R.drawable.errorwork,//
//                            ConstantApi.NET_READTIMEOUTERROR,//
//                            ConstantApi.NETWORKFAIL);
//
//                } else if (flagShowPageOrToast == ConstantApi.RESPONSE_ONFAILED_TOAST) {
//
//                    ToastUtils.showShort(ConstantApi.NET_READTIMEOUTERROR);
//
//                }
//
//            } else {//其他报错信息
//
//                if (flagShowPageOrToast == ConstantApi.RESPONSE_ONFAILED_PAGE) {
//
//                    CommUtils.checkCurrently((ErrorActivity) _activity, //
//                            R.drawable.errorwork,//
//                            ConstantApi.NET_BAD,//
//                            ConstantApi.NETWORKFAIL);
//
//                } else if (flagShowPageOrToast == ConstantApi.RESPONSE_ONFAILED_TOAST) {
//
//                    ToastUtils.showShort(ConstantApi.NET_BAD);
//
//                }
//            }
//        }

    }

    /**
     * http数据请求时候发生的异常
     */
    @Override
    public void onExceptionRequest(int method, Activity _activity, Exception exception) {

//        LogUtils.d("itchen---执行 ApiRequestSubListener--onExceptionRequest");

        if (exception != null) {
            CommUtils.onExceptionRequest(method, _activity, exception);
        } else {
            //如果是异常内容为空，那么构造一个异常
            CommUtils.onExceptionRequest(method, _activity, new Exception("onExceptionRequest 未知异常~"));
        }

    }
}
